package com.dev.springBootDemo;

import java.util.function.Consumer;

/**
 * 消费者示例类，使用Consumer接口处理字符串。
 */
public class ConsumerDemo {
    
    public static void main(String[] args) {
        // 单个消费者处理字符串
        operatorString("张三", (s) -> System.out.println(s));
        
        // 两个消费者依次处理字符串
        operatorString("张三", (s) -> System.out.println(s), (s) -> System.out.println(new StringBuilder(s).reverse().toString()));
    }
    
    /**
     * 接受一个字符串并应用一个消费者。
     * @param name 要处理的字符串
     * @param con 字符串的消费者
     */
    // 定义一个方法，消费一个字符串数据
    private static void operatorString(String name, Consumer<String> con) {
        con.accept(name);
    }
    
    /**
     * 接受一个字符串并依次应用两个消费者。
     * @param name 要处理的字符串
     * @param con1 第一个字符串消费者
     * @param con2 第二个字符串消费者
     */
    // 定义一个方法，用不同的方式消费同一个字符串两次
    private static void operatorString(String name, Consumer<String> con1, Consumer<String> con2) {
        // 通过andThen方法将两个消费者串联起来，形成一个消费链
        // 返回一个组合的Consumer
        con1.andThen(con2).accept(name);
    }
    // 张三
    // 张三
    // 三张
}

